包名 com.kdpay.lib
@外部依赖库("../../依赖包")
@外部依赖库("../../../安卓基本库/依赖库/androidx/annotation-1.1.0.jar")
@外部Java文件("../../util/Utils.java")
@导入Java("xyz.doikki.videoplayer.player.*")
@导入Java("xyz.doikki.videocontroller.*")
@导入Java("xyz.doikki.videoplayer.ijk.IjkPlayerFactory")
@导入Java("xyz.doikki.videoplayer.exo.*")
@导入Java("xyz.doikki.dkplayer.util.Utils")
@附加权限(安卓权限.网络权限)
@附加权限(安卓权限.网络信息权限)
@附加权限(安卓权限.悬浮窗权限)
@附加权限(安卓权限.文件权限_读取)
@附加权限(安卓权限.文件权限_写入)
@附加清单.组件属性([[android:configChanges="orientation|screenSize|keyboardHidden|uiMode"]])
@强制输出
类 Dk播放器:可视化组件
	@code
	StandardVideoController controller ;
	VideoView view;
	public #<Dk播放器>(android.content.Context context) {
        super(context);
    }
	@Override
    public VideoView onCreateView(android.content.Context context) {
	view=new VideoView(context);
	view.addOnStateChangeListener(new VideoView.SimpleOnStateChangeListener() {
            @Override
            public void onPlayStateChanged(int playState) {
                if (playState == view.STATE_PLAYBACK_COMPLETED) {
                    #播放结束();
                }else if(playState == view.STATE_PREPARING){
			    	#开始初始化();
				}else if(playState == view.STATE_PREPARED){
			    	#初始化完成();
				}else if(playState == view.STATE_ERROR){
			   	#播放错误();
				}
			    	
            }
        });
		
	return view;
    }
    @Override
    public VideoView getView() {
        return (VideoView) view;
    }
	@end
	方法 播放视频(地址:文本,标题:文本)
		@code
		getView().setUrl(#地址); //设置视频地址
        controller = new StandardVideoController(#取安卓环境()); 
        controller.addDefaultControlComponent(#标题, false);
        getView().setVideoController(controller); //设置控制器
		@end

	结束 方法
	//参数一:播放地址,参数二:标题,参数三:请求头
	方法 播放视频2(地址:文本,标题:文本,请求头:文本到文本哈希表)
		@code
		getView().setUrl(#地址,#请求头); //设置视频地址
        controller = new StandardVideoController(#取安卓环境()); 
        controller.addDefaultControlComponent(#标题, false);
        getView().setVideoController(controller); //设置控制器
		@end
	结束 方法
	//必须在播放前调用，1:AndroidMediaPlayerFactory(默认播放核心)2:IjkPlayerFactory3:ExoMediaPlayer
	方法 切换核心(核心类型:整数)
		如果 核心类型==1 则
			code getView().setPlayerFactory(AndroidMediaPlayerFactory.create());
		否则 
			如果 核心类型==2 则
				code getView().setPlayerFactory(IjkPlayerFactory.create());
			否则
				如果 核心类型==3 则
					code getView().setPlayerFactory(ExoMediaPlayerFactory.create());
				结束 如果
			结束 如果

		结束 如果
	结束 方法
	//设置完地址必须调用
	方法 开始播放()
		code getView().start();
	结束 方法
	方法 暂停()
		code getView().pause();
	结束 方法
	//恢复暂停状态继续播放
	方法 恢复播放()
		code getView().resume();
	结束 方法
	//停止所有播放，并复位
	方法 停止()
		code getView().pause();
	结束 方法
	//停止播放并清空播放变量
	方法 销毁()
		code getView().release();
	结束 方法
	//获取视频总时间
	方法 获取视频总长():长整数
		code return getView().getDuration();
	结束 方法
	方法 获取当前播放进度():长整数
		code return getView().getCurrentPosition();
	结束 方法
	方法 获取缓冲进度():整数
		code return getView().getBufferedPercentage();
	结束 方法
	方法 调整播放进度(进度:长整数)
		@code 
		getView().seekTo(#进度);
		controller.show();
		@end
	结束 方法
	//真或假
	方法 设置静音(是否静音:逻辑型)
		code getView().setMute(#是否静音);
	结束 方法
	方法 是否处于静音():逻辑型
		code return getView().isMute();
	结束 方法
	方法 获取当前播放状态():整数
		code return getView().getCurrentPlayState();
	结束 方法
	方法 获取缓冲网速():长整数
		code return getView().getTcpSpeed();
	结束 方法
	//无
	方法 置播放速度(速度:单精度小数)
		code getView().setSpeed(#速度);
	结束 方法
	//重复播放完的节目
	方法 是否重播(重播:逻辑型)
		code getView().replay(#重播);
	结束 方法
	//0.0f-1.0f 之间 ，v1 左声道音量， v2 右声道音量
	方法 设置音量(v1:单精度小数,v2:单精度小数)
		code getView().setVolume(#v1,#v2);
	结束 方法
	方法 进入全屏()
		code getView().startFullScreen();
	结束 方法
	方法 退出全屏()
		code getView().stopFullScreen();
	结束 方法
	方法 是否处于全屏():逻辑型
		code return getView().isFullScreen();
	结束 方法
	方法 设置是否开镜像旋转(反转:逻辑型)
		code getView().setMirrorRotation(#反转);
	结束 方法
	方法 视频截图():位图对象
		code return getView().doScreenShot();
	结束 方法
	方法 旋转画面(角度:单精度小数)
		code getView().setRotation(#角度);
	结束 方法
	方法 开启小屏播放()
		code getView().startTinyScreen();
	结束 方法
	方法 关闭小屏播放()
		code getView().stopTinyScreen();
	结束 方法
	方法 快进播放(进度:长整数)
		@code
		long jd=getView().getCurrentPosition();
		getView().seekTo(jd+#进度);
		controller.show();
		@end
	结束 方法
	方法 快退播放(进度:长整数)
		@code
		long jd=getView().getCurrentPosition();
		getView().seekTo(jd-#进度);
		controller.show();
		@end
	结束 方法
	方法 跳过片头(位置:整数)
		code getView().skipPositionWhenPlay(#位置);
	结束 方法
	/*设置视频比例
	默认比例:填0
	16:9:填1
	4:3:填2
	*/
	方法 视频显示比例(比例:整数)
		如果 比例==0 则
			code getView().setScreenScaleType(getView().SCREEN_SCALE_DEFAULT);
		否则 
			如果  比例==1 则
				code getView().setScreenScaleType(getView().SCREEN_SCALE_16_9);
			否则
				如果  比例==2 则
					code getView().setScreenScaleType(getView().SCREEN_SCALE_4_3);
				结束 如果
			结束 如果
		结束 如果

	结束 方法
	方法 获取当前核心():文本
		code return getCurrentPlayer();
	结束 方法
	@code
	protected String getCurrentPlayer() {
        String player;
        Object playerFactory = Utils.getCurrentPlayerFactoryInVideoView(getView());
        if (playerFactory instanceof ExoMediaPlayerFactory) {
            player = "ExoPlayer";
        } else if (playerFactory instanceof IjkPlayerFactory) {
            player = "IjkPlayer";
        } else if (playerFactory instanceof AndroidMediaPlayerFactory) {
            player = "MediaPlayer";
        } else {
            player = "unknown";
        }
        return String.format("%s", player);
    }
	
	@end
	定义事件 播放结束()
	定义事件 开始初始化()
	定义事件 初始化完成()
	定义事件 播放错误()
结束 类